package com.atues.thread.threadpool.capExp;

import java.util.concurrent.*;

public class SubmitExample {
    public static void main(String[] args) {
        ExecutorService executor = Executors.newFixedThreadPool(1);
        
        System.out.println("=== submit() 示例 ===");
        
        // 第一个任务 - 正常执行
        Future<?> future1 = executor.submit(() -> {
            System.out.println("任务1开始执行 - 线程: " + Thread.currentThread().getName());
        });
        
        // 第二个任务 - 抛出异常
        Future<?> future2 = executor.submit(() -> {
            System.out.println("任务2开始执行 - 线程: " + Thread.currentThread().getName());
            throw new RuntimeException("任务2抛出的异常");
        });
        
        // 第三个任务 - 观察线程是否被替换
        Future<?> future3 = executor.submit(() -> {
            System.out.println("任务3开始执行 - 线程: " + Thread.currentThread().getName());
        });
        
        try {
            future1.get(); // 正常完成
            future2.get(); // 这里会抛出ExecutionException
        } catch (InterruptedException | ExecutionException e) {
            System.out.println("捕获到异常: " + e.getCause());
        }
        
        try {
            future3.get(); // 正常完成
        } catch (InterruptedException | ExecutionException e) {
            e.printStackTrace();
        }
        
        executor.shutdown();
    }
}